package mx.uam.ayd.dulceria;

import mx.uam.ayd.dulceria.VentanaPrincipal;

import mx.uam.ayd.dulceria.dominio.*;
import mx.uam.ayd.dulceria.persistencia.*;

import mx.uam.ayd.dulceria.cu.consultarproducto.ControlConsultaProducto;
import mx.uam.ayd.dulceria.cu.iniciarsistema.ControlIniciar;
import mx.uam.ayd.dulceria.cu.listarproductos.ControlListarProductos;
import mx.uam.ayd.dulceria.cu.realizarventa.*;
import mx.uam.ayd.dulceria.cu.consultarproducto.*;
import mx.uam.ayd.dulceria.cu.imprimirhistorial.*;


/**
 * Clase que tiene el control principal del sistema CajaDulceria
 * @author Corporacion de oriente
 *
 */
public class ControlPrincipal {
	private ControlIniciar cIniciar;
	private ControlListarProductos cListar;
	private ControlVentas cVentas;
	private ControlConsultaProducto cConsulta;
	private ControlVentanaActualizaciones cActualizaciones;
	private ControlVentanaImprimirHistorial cHistorial;
	private VentanaPrincipal vPrincipal;


	/**
	 * Metodo main
	 * @param args
	 */
	public static void main(String[] args) {
		ControlPrincipal cp = new ControlPrincipal();
		cp.inicializar();
	}

	/**
	 * inicializa los controles asociados a los casos de uso
	 */
	private void inicializar(){
		cIniciar=new ControlIniciar(this);
		cVentas=ControlVentas.dameControl();
		cListar=new ControlListarProductos();
		cConsulta=new ControlConsultaProducto();
		cActualizaciones=new ControlVentanaActualizaciones();
		cHistorial=new ControlVentanaImprimirHistorial();
		cIniciar.ini();

	}

	/**
	 * lanza la ventana principal
	 * @param vendedor
	 */
	public void inicia(Vendedor vendedor){
		boolean administrador=false;
		if(vendedor.getTipo()==Vendedor.ADMINISTRADOR){
			administrador=true;
		}

		vPrincipal = new VentanaPrincipal(administrador,this);
	}

	/**
	 * metodo que comienza el control de nueva venta
	 */
	public void nuevaVenta(){
		cVentas.inicia();
	}

	/**
	 * metodo que comienza el control de listar productos
	 */
	public void listarProductos(){
		cListar.inicia();
	}

	public void consultarProducto(){
		cConsulta.inicia();
	}


	public void actualizaciones(){
		cActualizaciones.inicia();
	}


	public void imprimirHistorial(){
		cHistorial.inicia();
	}


	/**
	 * metodo para cerrar adecuadamente el sistema
	 */
	public void terminarSistema(){
		ManejadorBD.termina();
		System.exit(0);
	}
}
